package avicit.im.lantop.userauthset.service;

import java.util.List;
import java.util.Map;

import avicit.cbb.businessclass.system.dataauth.domain.CbbAuthResource;
import avicit.im.lantop.userauthset.domain.LantopOperateClass;
import avicit.im.lantop.userauthset.domain.LantopQualificationDetail;
import avicit.im.lantop.userauthset.domain.LantopUserAuthCondition;
import avicit.im.lantop.userauthset.domain.LantopUserAuthExtendData;
import avicit.im.lantop.userauthset.domain.LantopUserAuthSetExtend;
import avicit.platform6.commons.utils.web.TreeNode;
import avicit.platform6.core.jdbc.Page;

/**
 * <p>金航数码科技有限责任公司</p>
 * <p>作者：张坚</p>
 * <p>邮箱：18629436468@163.com</p>
 * <p>创建时间： 2015-3-3 下午3:29:48 </p>
 * <p>类说明：权限设置接口</p>
 * <p>修改记录： </p>
 */
public interface UserAuthService {

	/**
	 * 加载权限设置功能树
	 * @author 张坚 
	 * @param orgId
	 * @param sysId
	 * @param id
	 * @param operateClassId
	 * @return List<TreeNode>
	 * @throws Exception 
	 */
	public List<TreeNode> getMenuTreeNode(String orgIdentity,String orgId, String sysId, String id, String operateClassId) throws Exception;
	
	/**
	 * 加载权限设置共轭ngn树父节点下所有子节点
	 * @author 张坚 
	 * @param orgId
	 * @param sysId
	 * @param parentId
	 * @param operateClassId 权限分类ID
	 * @return List<Map<String,Object>>
	 * @throws Exception 
	 */
	public List<Map<String, Object>> getMenuByParentId(String orgIdentity,String orgId, String sysId, String parentId, String operateClassId) throws Exception;
	
	/**
	 * 加载模块下资源
	 * @author 张坚 
	 * @param parameter
	 * @return List<Map<String,Object>>
	 */
	public List<Map<String, Object>> getResource(Map<String, Object> parameter)  throws Exception;
	
	/**
	 * 保存权限资源配置
	 * @author 张坚 
	 * @param cbbAuthResource
	 * @param parameter
	 * @throws Exception void
	 */
	public void saveResourceConfig(List<CbbAuthResource> cbbAuthResources, Map<String, Object> parameter) throws Exception;
	
	/**
	 * 角色下所有用户
	 * @author 张坚 
	 * @param page
	 * @param orgIdentity 
	 * @param targetId void
	 */
	public void getRoleUser(Page<Map<String, Object>> page, String targetName, String orgIdentity);
	
	/**
	 * 根据用户ID获取用户
	 * @author 张坚 
	 * @param page
	 * @param targetId void
	 * @param orgIdentity 
	 */
	public void getUser(Page<Map<String, Object>> page, String targetId, String orgIdentity);
	
	/**
	 * 部门下所有用户
	 * @author 张坚 
	 * @param page
	 * @param targetId void
	 * @param orgIdentity 
	 */
	public void getDetpUser(Page<Map<String, Object>> page, String targetId, String orgIdentity);
	
	/**
	 * 群组下所有用户
	 * @author 张坚 
	 * @param page
	 * @param targetId void
	 * @param orgIdentity 
	 */
	public void getGroupUser(Page<Map<String, Object>> page, String targetId, String orgIdentity);
	
	/**
	 * 岗位下所有用户
	 * @author 张坚 
	 * @param page
	 * @param targetId void
	 * @param orgIdentity 
	 */
	public void getPositionUser(Page<Map<String, Object>> page, String targetId, String orgIdentity);
	
	/**
	 * 加载档案数据
	 * @author 张坚 
	 * @param param
	 * @return List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getArchiveClass(Map<String, Object> param);
	
	/**
	 * 加载已设置角色
	 * @author 张坚 
	 * @param page
	 * @param relTargetId 已关联的角色ID串
	 */
	public void getAlreadySetRoles(Page<Map<String, Object>> page, String relTargetId);
	
	/**
	 * 加载角色已定义操作
	 * @author 张坚 
	 * @param page relTargetId 已关联的角色ID串
	 */
	public void getRoleSetOperate(Page<Map<String, Object>> page, Map<String, Object> param);
	
	/**
	 * 加载没有设置的角色
	 * @author 张坚 
	 * @param page
	 * @param param void
	 */
	public void getNoSetRoles(Page<Map<String, Object>> page, Map<String, Object> param);
	
	/**
	 * 加载用户权限设置信息扩展对象
	 * @author 张坚 
	 * @param cbbAuthResourceId
	 * @return LantopUserAuthSetExtend
	 */
	public LantopUserAuthSetExtend getLantopUserAuthSetExtend(String cbbAuthResourceId);
	
	/**
	 * 新增用户权限设置信息扩展记录
	 * @author 张坚 
	 * @param lantopUserAuthSetExtend
	 * @throws Exception void
	 */
	public void insertLantopUserAuthSetExtend(LantopUserAuthSetExtend lantopUserAuthSetExtend) throws Exception;
	
	/**
	 * 删除用户权限设置信息扩展记录
	 * @author 张坚 
	 * @param id
	 * @throws Exception void
	 */
	public void delLantopUserAuthSetExtend(String id) throws Exception;
	
	/**
	 * 删除已设置角色
	 * @author 张坚 
	 * @param lantopUserAuthSetExtend
	 * @param delTargetIds
	 * @param delTargetNames
	 * @throws Exception void
	 */
	public void delRoleSet(LantopUserAuthSetExtend lantopUserAuthSetExtend, String delTargetIds, String delTargetNames) throws Exception;
	
	/**
	 * 加载电子文件待选择条目
	 * @author 张坚 
	 * @param page
	 * @param param void
	 */
	public void getElectronicWaitSelectEntry(Page<Map<String, Object>> page, Map<String, Object> param);
	
	/**
	 * 加载非电子文件待选择条目
	 * @author 张坚 
	 * @param page
	 * @param param void
	 */
	public void getNotElectronicWaitSelectEntry(Page<Map<String, Object>> page, Map<String, Object> param);
	
	/**
	 * 加载已设置权限条目
	 * @author 张坚 
	 * @param page
	 * @param param void
	 */
	public void getAuthEntry(Page<Map<String, Object>> page, Map<String, Object> param);
	
	/**
	 * 保存条目权限设置
	 * @author 张坚 
	 * @param lantopUserAuthExtendDatas
	 * @param param
	 * @throws Exception void
	 */
	public void saveAuthEntry(List<LantopUserAuthExtendData> lantopUserAuthExtendDatas, Map<String, Object> param) throws Exception;
	
	/**
	 * 删除条目权限设置
	 * @author 张坚 
	 * @param id
	 * @throws Exception void
	 */
	public void delLantopUserAuthExtendDataById(String id) throws Exception;
	
	/**
	 * 新增用户权限设置信息扩展对象
	 * @author 张坚 
	 * @param lantopUserAuthExtendData
	 * @throws Exception void
	 */
	public void insertLantopUserAuthExtendData(LantopUserAuthExtendData lantopUserAuthExtendData) throws Exception;
	
	/**
	 * 删除条目权限设置
	 * @author 张坚 
	 * @param ids
	 * @throws Exception void
	 */
	public void delAuthEntry(String ids) throws Exception;
	
	/**
	 * 保存新增条件
	 * @author 张坚 
	 * @param param
	 * @throws Exception void
	 */
	public void saveQualification(Map<String, Object> param) throws Exception;
	
	/**
	 * 添加操作权限分类对象
	 * @author 张坚 
	 * @param lantopOperateClass
	 * @throws Exception void
	 */
	public void insertLantopOperateClass(LantopOperateClass lantopOperateClass) throws Exception;
	
	/**
	 * 编辑操作权限分类对象
	 * @author 张坚 
	 * @param lantopOperateClass
	 * @throws Exception void
	 */
	public void updateLantopOperateClass(LantopOperateClass lantopOperateClass) throws Exception;
	
	/**
	 * 删除操作权限分类
	 * @author 张坚 
	 * @param ids
	 * @throws Exception void
	 */
	public void delLantopOperateClass(String ids) throws Exception;
	
	/**
	 * 加载操作权限分类
	 * @author 张坚 
	 * @param orgId 
	 * @param deptId 
	 * @param sysId 
	 * @param page
	 * @param param void
	 */
	public void getOperateClass(String sysId, String deptId, String orgId, Page<Map<String, Object>> page, Map<String, Object> param);
	
	/**
	 * 保存造作权限配置
	 * @author 张坚 
	 * @param param void
	 * @throws
	 */
	public void saveOperateClassAuthSet(Map<String, Object> param);
	
	/**
	 * 加载不包含relTargetId的操作权限分类
	 * @author 张坚 
	 * @param relTargetId
	 * @return List<Map<String,Object>>
	 */
	public List<Map<String, Object>> getLantopOperateClassList(String relTargetId);
	
	/**
	 * 加载操作权限分类
	 * @author 张坚 
	 * @param page
	 */
	public void getSetOperatreClass(Page<Map<String, Object>> page, String relTargetId);
	
	/**
	 * 根据权限资源ID串删除权限信息设置记录
	 * @author 张坚 
	 * @param ids
	 * @throws Exception void
	 * @throws
	 */
	public void delLantopUserAuthSetExtendByResourceId(String ids) throws Exception;
	
	/**
	 * 获取条件信息数量
	 * @author 张坚 
	 * @param targetType
	 * @param targetId
	 * @param authServiceId
	 * @param code
	 * @return int
	 */
	public int getLantopUserAuthSetExtendCount(String targetType, String targetId, String authServiceId, String code);
	
	/**
	 * 加载功能操作权限菜单树
	 * @author 张坚 
	 * @param id
	 * @return
	 * @throws Exception List<TreeNode>
	 */
	public List<TreeNode> getMenuTreeNode(String id) throws Exception;
	
	/**
	 * 根据功能操作权限树父节点加载子节点
	 * @author 张坚 
	 * @param parentId
	 * @return
	 * @throws Exception List<Map<String,Object>>
	 */
	public List<Map<String, Object>> getMenuByParentId(String parentId) throws Exception;
	
	/**
	 * 保存操作权限设置
	 * @author 张坚 
	 * @param cbbAuthResources
	 * @param parameter
	 * @throws Exception void
	 */
	public void saveFuncResourceConfig(List<CbbAuthResource> cbbAuthResources, Map<String, Object> parameter) throws Exception;
	
	/**
	 * 获取用户权限设置信息数量：用于判断是否可以批量设置操作权限
	 * @author 张坚 
	 * @param cbbAuthResourceIds
	 * @return int
	 */
	public int getLantopUserAuthSetExtendByResourceId(String cbbAuthResourceIds);
	
	/**
	 * 删除权限
	 * @author 张坚 
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param targetType
	 * @param targetId
	 * @throws Exception void
	 */
	public void delAuthSet(String orgId, String deptId, String sysId, String targetType, String targetId, String codes) throws Exception;
	
	/**
	 * 获取不包含用户ID为targetId的所有用户
	 * @author 张坚 
	 * @param page
	 * @param targetId
	 */
	public void getAllUser(Page<Map<String, Object>> page, String targetId, Map<String, Object> param);
	
	/**
	 * 获取targetId用户所有权限记录
	 * @author 张坚 
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param targetId
	 * @return List<LantopUserAuthSetExtend>
	 */
	public List<LantopUserAuthSetExtend> getLantopUserAuthSetExtend(String orgId, String deptId, String sysId, String targetId);
	
	/**
	 * 获取targetId用户所有权限记录
	 * @author 张坚 
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param targetId
	 * @return List<LantopUserAuthExtendData>
	 */
	public List<LantopUserAuthExtendData> getLantopUserAuthExtendData(String orgId, String deptId, String sysId, String targetId);
	
	/**
	 * 保存复制到目标用户
	 * @author 张坚 
	 * @param lantopUserAuthSetExtends
	 * @param lantopUserAuthExtendDatas
	 * @param cbbAuthResources
	 * @param targetUserIds
	 * @throws Exception void
	 */
	public void saveCopyToTargetUser(String orgId, String deptId, String sysId,
			List<LantopUserAuthSetExtend> lantopUserAuthSetExtends,
			List<LantopUserAuthExtendData> lantopUserAuthExtendDatas,
			List<CbbAuthResource> cbbAuthResources, String targetUserIds)
			throws Exception;
	
	/**
	 * 保存复制到目标用户(保存授权资源信息,更新用户权限设置信息扩展)
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param cbbAuthResources
	 * @param targetUserIds
	 * @throws Exception void
	 * @throws
	 */
	public void saveCbbAuthResourceAndUpdateSetExtendByUserIds(String orgId, String deptId, String sysId, List<CbbAuthResource> cbbAuthResources, String targetUserIds) throws Exception;
	
	/**
	 * 删除复制权限数据(数据回滚操作)
	 * @param orgId
	 * @param deptId
	 * @param sysId
	 * @param targetUserIds
	 * @throws Exception void
	 * @throws
	 */
	public void deleteAuthCopyDataByRollBack(String orgId, String deptId, String sysId, String targetUserIds) throws Exception;
	
	/**
	 * 保存条件权限明细信息
	 * @author 张坚 
	 * @param list
	 * @param param
	 * @throws Exception void
	 */
	public void saveLantopQualificationDetail(List<Map<String, Object>> list, Map<String, String> param) throws Exception;
	
	/**
	 * 删除条件权限明细信息
	 * @author 张坚 
	 * @param cbbAuthResourceId
	 * @throws Exception void
	 */
	public void delLantopQualificationDetail(String cbbAuthResourceId) throws Exception;
	
	/**
	 * 获取条件权限明细
	 * @author 张坚 
	 * @param cbbAuthResourceId
	 * @return List<LantopQualificationDetail>
	 */
	public List<LantopQualificationDetail> getLantopQualificationDetails(String cbbAuthResourceId);
	
	/**
	 * 保存条件权限明细
	 * @author 张坚 
	 * @param lantopQualificationDetail
	 * @throws Exception void
	 */
	public void saveLantopQualifcicationDetail(LantopQualificationDetail lantopQualificationDetail) throws Exception;
	
	/**
	 * 获取系统配置
	 * @param param
	 * @return
	 * @throws Exception
	 */
	public List<Map<String, Object>> getSysConfig(Map<String, Object> param) throws Exception;
	
	/**
	 * 保存系统配置
	 * @param param
	 * @throws Exception
	 */
	public void saveSysConfig(Map<String, Object> param) throws Exception;
	
	/**
	 * 更新系统配置
	 * @param param
	 * @throws Exception
	 */
	public void updateSysConfig(Map<String, Object> param) throws Exception;
	
	/**
	 * 取出数据结点的类型  (20160708 add wangzp)
	 * @param Str: 结点
	 * @throws Exception
	 * return String: 1:文件夹  2： 数据结点
	 */
	public String getClassNodeType(String str) throws Exception;
	
	/**
	 * 获取用户下的所有节点  (20160711 add wangzp)
	 * @param Str: 结点
	 * @throws Exception
	 * return String: 1:文件夹  2： 数据结点
	 */
	public String getClassNodeIds(String orgId, String deptId, String sysId, String targetId) throws Exception;
	
	/**
	 * 通过节点id获取数据授权信息
	 * @param nodeId
	 * @return
	 * @throws Exception List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getUserAuthExtendDatasByNodeId(String nodeId) throws Exception;
	
	
	//获取角色信息
	public void getUserRoleList(Page<Map<String, Object>> page,String name,String orgId);
	
	
	public List<Map<String, Object>> getUserAuthDatasByParam(Map<String, Object> param) throws Exception;
	
	/**
	 * 保存用户权限设置条件扩展信息
	 * @param luacs
	 * @param resourceId
	 * @throws Exception void
	 * @throws
	 */
	public void insertLantopUserAuthConditions(List<LantopUserAuthCondition> luacs, Map<String, Object> param) throws Exception;
	
	public List<Map<String, Object>> getUserAuthDatasByIdsParam(Map<String, Object> param) throws Exception;
	
	/**
	 * 根据ids获取用户权限设置数据
	 * @param param
	 * @return
	 * @throws Exception List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getCbbAuthResourceDatasByNodeId(Map<String, Object> param) throws Exception;

	public void getUsers(Page<Map<String, Object>> page, String name,
						 String orgId, String id) throws Exception;

}
